package cn.gzzhome.utils

/**
 * 任务阶段。每个任务包含多个阶段
 */
class Move {
    /**
     * 阶段名字
     */
    String name

    /**
     * 阶段执行的内容
     */
    Closure<Map<String, Object>> callback

    /**
     * 是否阻塞的，如果是阻塞的，只有通过此此步骤前的所有步骤后才能进入下一个任务
     */
    Boolean block = false

    //所属的task
    Task task

    /**
     * 一个临时排序的字段值
     */
    Integer idx

    /**
     * 参数
     */
    Map<String, Object> attrs = [:]

    def getLevel() {
        if (task != null) {
            return task.level
        } else {
            return 0
        }
    }

    def run() {
        if (callback != null) {
            callback(attrs)
        } else {
            throw new RuntimeException("未设置回调函数")
        }
    }

}
